A client device assembles a viewable region of an electronic map by using map tiles requested from a map server. For example, the map tiles are segments or sub-regions of the electronic map that can be pieced together to form the viewable region of the electronic map requested by the client device. In general, the map server defines and generates the map tiles according to an established protocol or specification. This protocol or specification specifies aspects of the map tiles such as map content (e.g., data layers), formatting, and how the map tiles are rendered. The map server is pre-programmed with the protocol/specification such that the map server produces all map tiles according to the specification. Accordingly, the map tiles produced by the particular map server share a specification and, thus, also share the same formatting and map content.
Furthermore, the map server pre-generates the map tiles according to the protocol/specification in a batch process before receiving requests for the map tiles. After pre-generating the map tiles, the map server caches the map tiles in a data store for use when servicing requests from client devices for particular map tiles. In general, generating the map tiles can be a computing intensive task that may take days to complete. Thus, the map tiles are maintained in the cache for weeks or even months without being refreshed because generating the map tiles is such an intensive process that can interrupt availability of the map tiles. However, as the underlying data from which the map tiles are generated changes, the map tiles become out-dated. Thus, a tradeoff between freshness and availability of the map tiles is generally made.
The map server services requests from client devices by simply retrieving requested map tiles from the data store to, at least in part, avoid processing delays from generating the map tiles after receiving the client requests. However, the pre-generated map tiles are numerous and, thus, consume a large amount of storage. Consequently, accommodating storage for the pre-generated map tiles can be burdensome. Furthermore, the pre-generated map tiles are limited to a single format and content defined by the protocol or specification used by the map server when generating the map tiles. Therefore, the map tiles are constrained to formatting and content defined by the protocol/specification, and thus, client devices cannot specify different content or formatting for the map tiles because the map tiles are static.
Additionally, while some map servers may provide map tiles that appear to be dynamically generated (e.g., current traffic maps, weather maps, etc.), the dynamic aspects of the map tiles are not actually provided using dynamically generated map tiles. Instead, for example, a map server uses the same cached map tiles as with a standard map request and also provides raw data (e.g., traffic data) to a requesting client device. The requesting client device is then tasked with rendering the raw data into a displayable form and overlaying the rendered data on top of the pre-generated map tiles to produce the map with additional dynamic content. However, as previously discussed, the pre-generated tiles suffer from problems with out-dated data and an inflexible format. Thus, adding additional data to the pre-generated map tiles does not solve these difficulties but further complicates underlying inaccuracies by overlaying current data onto potentially out-dated data. Additionally, rendering the additional data at the client consumes computing resources of the client device further burdening display of the map tiles.